
package light.mvc.utils;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

/**
 * @author jifan
 *
 * TODO 
 */
public class SysLogger {
	
	/**
	 * 获取日志对象，以便进行日志记录
	 * 日志级别从高到低为：OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL
	 * @param obj
	 * @return
	 */
	public static Log getLog(Class obj){
		return LogFactory.getLog(obj);
	}
	
	/**
	 *记录debug级别的日志
	 * @param obj
	 * @param msg
	 */
	public static void debug(Class obj,String msg){
		Log log = LogFactory.getLog(obj);
		if (log.isDebugEnabled()){
			log.debug(msg);
		}
	}
	
	/**
	 * 记录info级别的日志
	 * @param obj
	 * @param msg
	 */
	public static void info(Class obj,String msg){
		Log log = LogFactory.getLog(obj);
		if (log.isInfoEnabled()){
			log.info(msg);
		}
	}
	
	/**
	 * 记录warn级别的日志
	 * @param obj
	 * @param msg
	 */
	public static void warn(Class obj,String msg){
		Log log = LogFactory.getLog(obj);
		if (log.isWarnEnabled()){
			log.warn(msg);
		}
	}
	
	/**
	 * 记录error级别的日志
	 * @param obj
	 * @param msg
	 */
	public static void error(Class obj,String msg){
		Log log = LogFactory.getLog(obj);
		log.error(msg);
	}
	
	/**
	 * 不管当前日志级别，强制记录debug级别的日志
	 * @param obj
	 * @param msg
	 */
	public static void forceDebug(Class obj,String msg){
		Logger log = Logger.getLogger(obj);
		if (log.isDebugEnabled()){
			log.debug(msg);
		}else{
			log.setLevel(Level.DEBUG);
			log.debug(msg);
		}
			
	}
	
	/**
	 * 不管当前日志级别，强制记录info级别的日志
	 * @param obj
	 * @param msg
	 */
	public static void forceInfo(Class obj,String msg){
		Logger log = Logger.getLogger(obj);
		if (log.isInfoEnabled()){
			log.info(msg);
		}else{
			log.setLevel(Level.INFO);
			log.info(msg);
		}
	}
	
}
